﻿using System;
using System.Collections.Generic;
using Domain.MainModule.Entities;

namespace Application.MainModule.RateManagement
{
    public interface IRateManagementService
    {
        /// <summary>
        /// Add new rate.
        /// </summary>
        /// <param name="rate">Rate to be added</param>
        void AddRate(Rate rate);

        /// <summary>
        /// Change existing rate.
        /// </summary>
        /// <param name="rate">Existing rate to modify.</param>
        void ChangeRate(Rate rate);

        /// <summary>
        /// Find an rate by its Id.
        /// </summary>
        /// <param name="rateId">RateId</param>
        /// <returns>An rate</returns>
        Rate FindRateById(Guid rateId);

        /// <summary>
        /// Find an rate by country Id.
        /// </summary>
        /// <param name="countryId">Membership CountryId</param>
        /// <returns>A Rate</returns>
        List<Rate> FindRateByCountryId(Guid countryId);

        /// <summary>
        /// Remove an existing rate.
        /// </summary>
        /// <param name="rate">The adress to be removed.</param>
        void RemoveRate(Rate rate);
    }
}
